package com.adk.backend.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

/**
 * 报表统计Mapper接口
 */
@Mapper
public interface ReportMapper {
    
    /**
     * 按业务员统计订单（report.php的orders功能）
     */
    List<Map<String, Object>> selectOrdersReportBySales(@Param("params") Map<String, Object> params);
    
    /**
     * 贸易订单提单号列表（report.php的gt功能）
     */
    List<Map<String, Object>> selectTradeOrderAwbList(@Param("params") Map<String, Object> params);
    
    /**
     * 统计业务员订单数量
     */
    Long countOrdersBySalesUid(@Param("salesUid") Long salesUid, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime);
    
    /**
     * 统计业务员订单重量（空运）
     */
    java.math.BigDecimal sumOrdersWeightBySalesUidAndShipType(@Param("salesUid") Long salesUid, @Param("shipTypes") List<Integer> shipTypes, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime);
    
    /**
     * 统计业务员订单数量（按运输方式）
     */
    Long countOrdersBySalesUidAndShipType(@Param("salesUid") Long salesUid, @Param("shipType") Integer shipType, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime);
    
    /**
     * 数据看板：统计总订单数
     */
    Long countTotalOrders(@Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("salesUid") Long salesUid);
    
    /**
     * 数据看板：统计待审核订单数
     */
    Long countPendingConfirmOrders(@Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("salesUid") Long salesUid);
    
    /**
     * 数据看板：统计总重量（空运）
     */
    java.math.BigDecimal sumTotalWeightAir(@Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("salesUid") Long salesUid);
    
    /**
     * 数据看板：统计总体积（海运）
     */
    java.math.BigDecimal sumTotalVolumeSea(@Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("salesUid") Long salesUid);
    
    /**
     * 数据看板：按运输方式统计订单数
     */
    Long countOrdersByShipType(@Param("shipType") Integer shipType, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("salesUid") Long salesUid);
    
    /**
     * 获取贸易运输方式列表
     */
    List<Map<String, Object>> selectTradeShipTypes();
}

